package bean;

import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.*;

import controller.PersonaleInterface;
import controller.RicercaInterface;
import dto.*;

@ManagedBean
@RequestScoped
public class VisualBean implements Serializable{
	private static final long serialVersionUID = 1L;

	@EJB
	private PersonaleInterface personal;
	@EJB
	private RicercaInterface ricerca;
	
	private PacchettoPersonaleDTO pacchetto;
	private ElementoBaseDTO elemento;
	private ElementoBaseDTO selectedElemento;
	private ElementoBaseDTO dettaglio;
	private VoloDTO volo;
	private EscursioneDTO escursione;
	private HotelDTO hotel;
	
	public VisualBean(){
		this.elemento = new ElementoBaseDTO();
		this.selectedElemento = new ElementoBaseDTO();
		this.dettaglio  = new ElementoBaseDTO();
		this.volo = new VoloDTO();
		this.escursione = new EscursioneDTO();
		this.hotel = new HotelDTO();
	}

	public PacchettoPersonaleDTO getPacchetto() {
		return pacchetto;
	}

	public void setPacchetto(PacchettoPersonaleDTO pacchetto) {
		this.pacchetto = pacchetto;
	}

	public ElementoBaseDTO getElemento() {
		return elemento;
	}

	public void setElemento(ElementoBaseDTO elemento) {
		this.elemento = elemento;
		List<ElementoBaseDTO> newList = this.pacchetto.getElementi();
		if(this.elemento!=null)
			newList.add(elemento);
		this.pacchetto.setElementi(newList);
		if(pacchetto!=null)
			personal.updatePacchettoPersonale(pacchetto);
	}

	public ElementoBaseDTO getSelectedElemento() {
		return selectedElemento;
	}

	public void setSelectedElemento(ElementoBaseDTO selectedElemento) {
		this.selectedElemento = selectedElemento;
	}
	
	public void salvaPacchetto(){
		setElemento(this.selectedElemento);
	}
	
	public void ciao(){
		System.out.println("Hello");
	}

	public VoloDTO getVolo() {
		return volo;
	}

	public void setVolo(VoloDTO volo) {
		this.volo = volo;
	}

	public EscursioneDTO getEscursione() {
		return escursione;
	}

	public void setEscursione(EscursioneDTO escursione) {
		this.escursione = escursione;
	}

	public HotelDTO getHotel() {
		return hotel;
	}

	public void setHotel(HotelDTO hotel) {
		this.hotel = hotel;
	}
	
	public void caricaInfo(String id){
		try{
		int pk = Integer.parseInt(id);
		this.dettaglio = ricerca.getElementoPK(pk);
		if(dettaglio!=null){
			this.volo = ricerca.getDettaglioVolo(dettaglio);
		}
		
		}catch(Exception e){}

	}

	public ElementoBaseDTO getDettaglio() {
		return dettaglio;
	}

	public void setDettaglio(ElementoBaseDTO dettaglio) {
		this.dettaglio = dettaglio;
	}
	
	
}
